unit uConta;

interface

uses
  uExceptionSenhaInvalida, uExceptionSaldoInsuficiente, System.SysUtils;

type
  TConta = class
    private
      FNumeroConta  : integer;
      FSenha        : String;
      FSaldo        : Double;
    public
      Property NumeroConta  : integer read FNumeroConta write FNumeroConta;
      property Senha        : String read FSenha write FSenha;
      property Saldo        : Double read FSaldo write FSaldo;

      procedure Saque(Senha : string; ValorSacado : double);

      constructor Create(Senha : String; Saldo : Double); overload;
      constructor Create(NumeroConta : integer); overload;
      constructor Create; overload;
  end;

implementation

constructor TConta.Create;
begin
;
end;

constructor TConta.Create(Senha: string; Saldo: Double);
begin
  self.Senha := Senha;
  self.Saldo := Saldo;
end;

constructor TConta.Create(NumeroConta: integer);
begin
  self.NumeroConta := NumeroConta;
end;

procedure Tconta.Saque(Senha: string; ValorSacado: Double);
begin
  if not Senha.Equals(self.Senha) then
    raise ESenhaInvalida.Create(Senha, Length(Senha), now);
  if ValorSacado > self.Saldo then
    raise ESaldoInsuficiente.Create(self.Saldo, ValorSacado);
  self.Saldo := self.Saldo - ValorSacado;
end;

end.
